//<editor-fold desc="Programma INFO">

/******************************
 * De Een Armige Bandiet V1.2 *
 * By FrankkieNL              *
 * Release datum: 6-7-2009    *
 ******************************
 * OPEN SOURCE                *
 ******************************
 * Hoe Het Werkt:             *
 * 1) Muntje Erin             *
 * 2) Trek aan de Arm         *
 * 3) stop de draaiers        *
 * Als je 3x hetzelfde        *
 * plaatje hebt, krijg        *
 * je (credits*3)             *
 ******************************
 * BUG gevonden? Mail:        *
 * frankkie12345@gmail.com    *
 *****************************/
//</editor-fold>
//<editor-fold desc="INFO VOOR DEV-ERS">
/**************************************************************
 * INFO VOOR DEV-ERS:                                         *
 **************************************************************
 * ///////////////Geluiden////////////////////////////////////*
 * De Geluiden moet in:                                       *
 * WAV-formaat.                                               *
 * Ik heb het script voor het afspelen van de                 *
 * geluiden niet Helemaal zelf gemaakt. zie:                  *
 * http://www.jsresources.org/examples/SimpleAudioPlayer.html *
 * De Geluiden moeten in de zelfde map/package staan als:     *
 * Audio.class en Main.class anders kan hij ze niet vinden!   *
 * Ik heb geprobeerd om ze in 'media' te zetten (zoals de     *
 * plaatjes, maar dat werkte niet.)                           *
 **************************************************************
 * ////////////////////Plaatjes///////////////////////////////*
 * De plaatjes DEEL 1 (EEN)                                   *
 * De Kleine Plaatjes (KNOPPEN)                               *
 * ( 'arm.gif','munt.jpg','munten.jpg' )                      *
 * Moeten een formaat van (ongeveer) 50x50pixels hebben.      *
 * Ze moeten staan in de map/package 'media'                  *
 * De ondersteunde bestandsformaten:                          *
 * BMP, GIF (decoder only), FlashPix (decoder only), JPEG,    *
 * PNG, PNM, TIFF, and WBMP.                                  *
 * (zie: http://java.sun.com/products/java-media/jai/iio.html)*
 * Waar in de code:                                           *
 * Deze plaatjes worden geladen in de method:                 *
 * public static void maakPanel()                             *
 **************************************************************
 * De Plaatjes DEEL 2 (TWEE)                                  *
 * De Grote Plaatjes (DRAAIERS)                               *
 * ( '0.jpg' t/m '7.jpg' )                                    *
 * Moeten een formaat hebben van (ongeveer) 100x100pixels.    *
 * Ze moeten staat in de map/package 'media'                  *
 * Waar in de code:                                           *
 * Deze plaatjes worden geladen in de method:                 *
 * public static void maakPanel()                             *
 * Let op! als je een ander aantal plaatjes wilt gebruiken,   *
 * verander dan de waarde van:                                *
 * public staic final in aantalPlaatjes                       *
 **************************************************************
 * //////////////////Look And Feel////////////////////////////*
 * De Look And Feel wordt ingesteld in                        *
 * Main() //de Constructor van de Class Main                  *
 * Als je de Look And Feel dingen weghaalt of als je alles    *
 * //in een comment zet. Dan gebruikt hij de Standaard Java   *
 * Look (AKA Metal-Look) met blauwe knopjes.                  *
 * In dit programma staat hij standaard op System-Look        *
 * Waar je op kan letten: ik heb de grootte van het venster   *
 * zo ingesteld dat alles in het venster past, zonder al te   *
 * veel lege ruimte(s). Als je een andere Look And Feel kiest *
 * (of het Niet op Ubuntu(GNOME) runt) dan kan het zijn dat   *
 * je het venstertje wat groter of kleiner moet maken.        *
 * zie public static void maakFrame()                         *
 **************************************************************
 * ////////////////Opties/////////////////////////////////////*
 * De opties zijn sinds Versie 1.2 te regelen via de          *
 * properties-file.                                           *
 **************************************************************
 * ///////////Uitbetalen//////////////////////////////////////*
 * Zodra alle 3 de draaiers stil staan wordt de method        *
 * public static void uitbetalen() aangeroepen.               *
 * Deze method regelt het aantal muntjes dat je krijgt als je *
 * wint. Standaard krijg je alleen geld met 3 dezelfde        *
 * Formule: KRIJGEN = (credits*3);                            *
 * De credits die je hebt ingezet krijg je niet terug.        *
 * met (int) d0,d1,d2 kan je zien op welk plaatje de draaiers *
 * zijn gestopt, het nummer komt overeen met het nummer van   *
 * plaatje bij public static void maakPanel()                 *
 **************************************************************
 * ////////////////Bronnen////////////////////////////////////*
 * -de method createImageIcon is afgeleid van de method       *
 * createImageIcon op deze pagina:                            *
 * http://java.sun.com/docs/books/tutorial/uiswing/examples/  *
 * components/ButtonDemoProject/src/                          *
 * components/ButtonDemo.java                                 *
 * Afgeleid, dus hijs niet exact hetzelfde.                   *
 * -de class Audio komt van:                                  *
 * http://www.jsresources.org/examples/SimpleAudioPlayer.html *
 * Ik heb methods die andere argumenten accepteren gemaakt.   *
 * De originele doet het alleen via commandline.              *
 * -de plaatjes heb ik gevonden via: google afbeeldingen      *
 * =munt.jpg:                                                 *
 * http://www.sevensheaven.nl/imagedetails/illustraties/      *
 * iconen/euromunt/                                           *
 * =munten.jpg:                                               *
 * http://www.sevensheaven.nl/imagedetails/illustraties/      *
 * iconen/euro-munten/                                        *
 * ==Fruit                                                    *
 * http://www.istockphoto.com/file_closeup/food-and-drink/    *
 * fruits-and-vegetables/                                     *
 * 5966143-fruit-cartoon-collection.php?id=5966143            *
 * ==Geluiden 'google'                                        *
 **************************************************************
 * //////////////The End//////////////////////////////////////*
 * Bug(s) en/of Vragen? Mail: frankkie12345@gmail.com         *
 *************************************************************/
//////////////////////////
//De Juiste code om geluid af te spelen:
//N = NetBeans
//J = JAR-File
//Audio.start(getClass().getResourceAsStream("Fireball.wav")); //N=ja J=nee
// Audio.start(getClass().getResource("Fireball.wav")); //N=ja J=Ja, Half
//Met OPENJDK6 hoor je niks (geen error) (getest op Ubuntu 9.04)
//Met Sun Java 6 doet hij het wel :P
//Audio.start(getClass().getResource("Fireball.wav").toString()); //N=nee J=nee
//Audio.start(new File(getClass().getResource("Fireball.wav").toURI())); //N=nee J=nee
//Audio.start(getClass().getResource("Fireball.wav").toURI()); //N=ja J=nee
//////////////////////////////
//</editor-fold>
//<editor-fold desc="To-Do">
/* Hier komt een lijstje met dingen
 * die ik ga aanpassen in volgende versie(s):
 *
 * Een Applet versie maken
 * (nu is het een Applicatie)
 *
 * Proberen te fixen dat het geluid ook werkt als je comp
 * al een ander geluid aan het afspelen is.
 * (als je comp herrie maakt, krijg je een error met:
 * audio-line in gebruik/niet beschikbaar )
 */
//</editor-fold>
//<editor-fold desc="Versie-LOG">
/*
 * Versie 1.0 (release: 5-7-09)
 *
 * Versie 1.1 (release: 6-7-09)
 * Hij KAN nu ook kijken naar schuin 3 op een rij.
 * (doet ie niet, maar kan nu wel als je uitbetalen() aanpast)
 * (feature-request by Steffex)
 *
 * De draaiers KUNNEN met verschillende snelheden draaien.
 * (zie public static final int )
 * (feature-request by Steffex)
 *
 * Versie 1.2
 * Je kan nu bepaalde instellingen wijzigen dmv de properties-file.
 * dan hoef je niet meer in de code te duiken voor die kleine
 * aanpassing-kjes.
 */
//</editor-fold>
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStream;
import java.util.Properties;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class Main {
  //<editor-fold desc="public static ...">

  public static JFrame frame;
  public static JPanel paneel;
  public static int aantalMuntjes = 10; //muntjes wat je aan het begin hebt.
  public static int credits = 0;
  public static int tempGekregen = 0;
  public static int aantalGekregen = 0;
  public static JLabel titleLBL;
  public static JLabel[] fruit;
  public static Timer klok0;
  public static Timer klok1;
  public static Timer klok2;
  public static ImageIcon[] fruitIMG;
  public static boolean stop0 = false;
  public static boolean stop1 = false;
  public static boolean stop2 = false;
  public static int aantalPlaatjes = 8;
  public static int speed0 = 200; //Draai snelheid, lager = sneller.
  public static int speed1 = 200;
  public static int speed2 = 200;
  public static JLabel uitgifteLBL;
  public static Timer geefKlok;
  public static int watErUitbetaaldMoetWorden = 3;
  public static boolean magOpStopKlikken = true;
  public static Timer autoStopKlok0;
  public static Timer autoStopKlok1;
  public static Timer autoStopKlok2;
  //</editor-fold>

  public Main() {
    //De Look And Feel Aanpassen
    try {
      javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName()); //System
      //javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); //Nimbus
      //javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getCrossPlatformLookAndFeelClassName()); //Metal
    } catch (Exception e) {
      System.err.println("Fout:\n" + e);
    }
    doeSettings();
    maakFrame();
    maakPanel();
    maakKlokken();
    maakGeefKlok();
    frame.add(paneel);
    frame.setVisible(true);
  }

  public static void doeSettings() {
    System.out.println("Proberen settings in te stellen via bandiet.properties...");
    Properties props = new Properties();
    java.net.URL deURL = Main.class.getResource("bandiet.properties");
    try {
      InputStream in = deURL.openStream();
      props.load(in);
      in.close();
      // boe
      System.out.println("Settings aanpassen...");
      speed0 = Integer.parseInt((String) props.get("speed0"));
      speed1 = Integer.parseInt((String) props.get("speed1"));
      speed2 = Integer.parseInt((String) props.get("speed2"));
      aantalMuntjes = Integer.parseInt((String) props.get("aantalMuntjes"));
      watErUitbetaaldMoetWorden = Integer.parseInt((String) props.get("watErUitbetaaldMoetWorden"));
      String magOfNiet = (String) props.get("magOpStopKlikken");
      if (magOfNiet.equalsIgnoreCase("true")) {
        magOpStopKlikken = true;
      } else if (magOfNiet.equalsIgnoreCase("false")) {
        magOpStopKlikken = false;
      }

    } catch (Exception ex) {
      System.out.println("Fout bij bandiet.properties\n" + ex);
    }

  }

  public static void maakFrame() {
    frame = new JFrame();
    if (magOpStopKlikken) {
      frame.setSize(442, 580);
    } else {
      frame.setSize(442, 481);
    }
    //frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("De Een-Armige Bandiet");
    frame.setLocationRelativeTo(null); //in het midden van het scherm
  }

  public static ImageIcon createImageIcon(String path) {
    //zie:
    //http://java.sun.com/docs/books/tutorial/uiswing/examples/components/ButtonDemoProject/src/components/ButtonDemo.java
    System.out.println("createImageIcon: " + path);
    java.net.URL imgURL = Main.class.getResource(path);
    return new ImageIcon(imgURL);
  }

  public static void maakPanel() {
    paneel = new JPanel();
    BorderLayout layoutBorder = new BorderLayout();
    layoutBorder.setHgap(2);
    layoutBorder.setVgap(2);
    paneel.setLayout(layoutBorder);
    titleLBL = new JLabel();
    titleLBLrefresh();
    titleLBL.setHorizontalAlignment(JLabel.CENTER);
    paneel.add(titleLBL, BorderLayout.NORTH);
    //PLAATJE !! default: "media" + "/" + "munt.jpg"
    ImageIcon muntIMG = createImageIcon("media" + "/" + "munt.jpg");
    JButton creditBTN = new JButton("<html><center>Muntje<br>Erin</center></html>", muntIMG);
    creditBTN.setVerticalTextPosition(JButton.NORTH);
    creditBTN.setHorizontalTextPosition(JButton.CENTER);

    creditBTN.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        if (aantalMuntjes > 0) {
          if ((!klok0.isRunning() && !klok1.isRunning() && !klok2.isRunning()) && !geefKlok.isRunning()) {
            aantalMuntjes--;
            credits++;
            titleLBLrefresh();//.setText("<html><center>De Een-Armige Bandiet<br>Jouw Aantal Muntjes: <font color=\"blue\">" + aantalMuntjes + "</font><br>Aantal Credits: <font color=\"red\">" + credits + "</font></center></html>");
            Audio.start(getClass().getResource("Fireball.wav"));
          } else {
            if (klok0.isRunning() || klok1.isRunning() || klok2.isRunning()) {
              JOptionPane.showMessageDialog(null, "Je kan geen muntjes in de machine gooien als hij Draait !");
            }
            if (geefKlok.isRunning()) {
              JOptionPane.showMessageDialog(null, "Je kan geen muntjes in de machine gooien tijdens het uitbetalen !");
            }
          }
        } else {
          JOptionPane.showMessageDialog(null, "Je Hebt Geen Muntjes Meer\nWhahahahaha XD");
        }
      }
    });
    paneel.add(creditBTN, BorderLayout.WEST);
    //PLAATJE !! default: "media" + "/" + "arm.gif"
    ImageIcon armIMG = createImageIcon("media" + "/" + "arm.gif");
    JButton armBTN = new JButton("<html>Trek<br>Aan<br>de<br>Arm</html>", armIMG);
    armBTN.setVerticalTextPosition(JButton.NORTH);
    armBTN.setHorizontalTextPosition(JButton.CENTER);
    armBTN.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        //throw new UnsupportedOperationException("Not supported yet.");
        startDraaien();
      }
    });
    paneel.add(armBTN, BorderLayout.EAST);
    //PLAATJE !! default: "media" + "/" + "munten.jpg"
    ImageIcon muntenIMG = createImageIcon("media" + "/" + "munten.jpg");
    uitgifteLBL = new JLabel("", muntenIMG, JLabel.CENTER);
    uitgifteLBLrefresh();
    paneel.add(uitgifteLBL, BorderLayout.SOUTH);
    //
    JPanel centerP = new JPanel();
    GridLayout layoutGrid = new GridLayout();
    //layoutGrid.setColumns(3);
    if (magOpStopKlikken) {
      layoutGrid.setRows(4);
    } else {
      layoutGrid.setRows(3);
    }
    //layoutGrid.setHgap(3);
    centerP.setLayout(layoutGrid);
    centerP.setBorder(new LineBorder(Color.BLACK));
    // PLAATJES !! default: 0.jpg t/m 7.jpg
    fruitIMG = new ImageIcon[aantalPlaatjes];
    fruitIMG[0] = createImageIcon("media" + "/" + "0.jpg"); //nomnomnom
    fruitIMG[1] = createImageIcon("media" + "/" + "1.jpg"); //aardbei
    fruitIMG[2] = createImageIcon("media" + "/" + "2.jpg"); //banaan
    fruitIMG[3] = createImageIcon("media" + "/" + "3.jpg"); //kersen
    fruitIMG[4] = createImageIcon("media" + "/" + "4.jpg"); //citroen
    fruitIMG[5] = createImageIcon("media" + "/" + "5.jpg"); //pruimen
    fruitIMG[6] = createImageIcon("media" + "/" + "6.jpg"); //sinas
    fruitIMG[7] = createImageIcon("media" + "/" + "7.jpg"); //druiven
    fruit = new JLabel[10]; //deze zijn 'zichtbaar', de draaiers
    /* 0 1 2
     * 3 4 5
     * 5 7 8 Daarom dus a<=8 */
    for (int a = 0; a <= 8; a++) {
      fruit[a] = new JLabel();
      fruit[a].setHorizontalAlignment(JLabel.CENTER);
    }
    fruit[0].setIcon(fruitIMG[0]);
    fruit[1].setIcon(fruitIMG[1]);
    fruit[2].setIcon(fruitIMG[2]);
    fruit[3].setIcon(fruitIMG[1]);
    fruit[4].setIcon(fruitIMG[2]);
    fruit[5].setIcon(fruitIMG[3]);
    fruit[6].setIcon(fruitIMG[2]);
    fruit[7].setIcon(fruitIMG[3]);
    fruit[8].setIcon(fruitIMG[4]);
    for (int a = 0; a <= 8; a++) {
      fruit[a].setBorder(new LineBorder(Color.gray));
      centerP.add(fruit[a]);
    }
    JButton stop0BTN = new JButton("<html><center>Stop<br>Links</center></html>");
    JButton stop1BTN = new JButton("<html><center>Stop<br>Midden</center></html>");
    JButton stop2BTN = new JButton("<html><center>Stop<br>Rechts</center></html>");
    stop0BTN.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        stopGeklikt(0);
      }
    });
    stop1BTN.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        stopGeklikt(1);
      }
    });
    stop2BTN.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        stopGeklikt(2);
      }
    });
    if (magOpStopKlikken) {
      centerP.add(stop0BTN);
      centerP.add(stop1BTN);
      centerP.add(stop2BTN);
    }
    //
    paneel.add(centerP);
    //
  }

  public static void uitgifteLBLrefresh() {
    uitgifteLBL.setText("<html>Muntjes Gekregen: <font color=\"blue\"><big>" + aantalGekregen + "</big></font></html>");
  }

  public static void titleLBLrefresh() {
    titleLBL.setText("<html><center><big>De Een-Armige Bandiet</big></center>Jouw Aantal Muntjes: <font color=\"blue\"><big>" + aantalMuntjes + "</big></font><br>Aantal Credits: <font color=\"red\"><big>" + credits + "</big></font></html>");
  }

  public static void stopGeklikt(int welke) {
    if (klok0.isRunning() || klok1.isRunning() || klok2.isRunning()) {
      if (welke == 0) {
        stop0 = true;
      } else if (welke == 1) {
        stop1 = true;
      } else if (welke == 2) {
        stop2 = true;
      }
    } else {
      JOptionPane.showMessageDialog(null, "Hij draait nog niet!\nTrek aan de Arm!");
      return;
    }

    if (stop0 && stop1 && stop2) {
      if (klok0.isRunning() || klok1.isRunning() || klok2.isRunning()) {
        klok0.stop();
        klok1.stop();
        klok2.stop();
      }
      uitbetalen();
    }

  }

  public static void maakGeefKlok() {
    geefKlok = new Timer(500, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        System.out.println("geefKlok...");
        //System.out.println("aantalGekregen= " + aantalGekregen + " credits=" + credits);
        if (aantalGekregen < watErUitbetaaldMoetWorden) {
          aantalGekregen++;
          //System.out.println("aantalGekregen: " + aantalGekregen);
          uitgifteLBLrefresh();
          frame.repaint();
          uitgifteLBL.repaint();
          Audio.start(getClass().getResource("Coin.wav"));
        } else {
          ///////
          aantalMuntjes += aantalGekregen;
          aantalGekregen = 0;
          credits = 0;
          uitgifteLBLrefresh();
          titleLBLrefresh();
          frame.repaint();
          geefKlok.stop();
        }
        System.out.println("aantalGekregen= " + aantalGekregen + " credits=" + credits + " aantalMuntjes=" + aantalMuntjes);
      }
    });
    geefKlok.setRepeats(true);
  }

  public static void uitbetalen() {
    //LET OP! deze method is aanpast in vergelijking met de vorige versie
    /* 0 1 2
     * 3 4 5
     * 6 7 8 */
    //Ze staan allemaal stil XD
    int d0 = getWelkPlaatje(0); //LinksBoven
    int d1 = getWelkPlaatje(1); //MiddenBoven
    int d2 = getWelkPlaatje(2); //RechtsBoven
    int d3 = getWelkPlaatje(3); //LinksMidden
    int d4 = getWelkPlaatje(4); //MiddenMidden
    int d5 = getWelkPlaatje(5); //RechtsMidden
    int d6 = getWelkPlaatje(6); //LinksOnder
    int d7 = getWelkPlaatje(7); //MiddenOnder
    int d8 = getWelkPlaatje(8); //RechtsOnder
    System.out.println("d3 = " + d3 + " d4 = " + d4 + " d5 = " + d5);
    if (d3 == d4 && d4 == d5) {
      //3 dezelfde XD
      Audio.start(Main.class.getResource("Win.wav"));
      watErUitbetaaldMoetWorden = credits * 3;
      geefKlok.start();
    } else {
      credits = 0;
      if (aantalMuntjes == 0) {
        //Niet Gewonnen, en de muntjes zijn op
        Audio.start(Main.class.getResource("GameOver.wav"));
      } else {
        //Niet Gewonnen
        Audio.start(Main.class.getResource("Death.wav"));
      }
    }
    titleLBLrefresh();
  }

  public static int getWelkPlaatje(int welke) {
    //LET OP! deze method is aanpast in vergelijking met de vorige versie
    /* 0 1 2
     * 3 4 5
     * 6 7 8 */
    for (int b = 0; b <= (aantalPlaatjes - 1); b++) {
      if (fruit[welke].getIcon().equals(fruitIMG[b])) {
        return b;
      }
    }
    return -1;
  }

  public static void maakKlokken() {

    klok0 = new Timer(speed0, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        for (int a = 0; a <= 8; a++) {
          // System.out.println("a=" + a);
          if ((a == 0 || a == 3 || a == 6) && !stop0) {
            for (int b = 0; b <= (aantalPlaatjes - 1); b++) {
              //   System.out.println("a=" + a + " b=" + b);
              if (fruit[a].getIcon().equals(fruitIMG[b])) {
                int c = (b - 1);
                //   System.out.println("a=" + a + " b=" + b + " c=" + c);
                if (c < 0) {
                  c = aantalPlaatjes - 1;
                }
                // System.out.println("a=" + a + " b=" + b + " c=" + c);
                fruit[a].setIcon(fruitIMG[c]);
                break;
              }
            }
          }
        }
      }
    });
    klok0.setRepeats(true);

    klok1 = new Timer(speed1, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        //
        for (int a = 0; a <= 8; a++) {
          if ((a == 1 || a == 4 || a == 7) && !stop1) {
            for (int b = 0; b <= (aantalPlaatjes - 1); b++) {
              //System.out.println("a=" + a + " b=" + b);
              if (fruit[a].getIcon().equals(fruitIMG[b])) {
                int c = (b - 1);
                //System.out.println("a=" + a + " b=" + b + " c=" + c);
                if (c < 0) {
                  c = aantalPlaatjes - 1;
                }
                //System.out.println("a=" + a + " b=" + b + " c=" + c);
                fruit[a].setIcon(fruitIMG[c]);
                break;
              }
            }
          }
        }
        //
      }
    });
    klok1.setRepeats(true);

    klok2 = new Timer(speed2, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        for (int a = 0; a <= 8; a++) {
          if ((a == 2 || a == 5 || a == 8) && !stop2) {
            for (int b = 0; b <= (aantalPlaatjes - 1); b++) {
              //System.out.println("a=" + a + " b=" + b);
              if (fruit[a].getIcon().equals(fruitIMG[b])) {
                int c = (b - 1);
                //  System.out.println("a=" + a + " b=" + b + " c=" + c);
                if (c < 0) {
                  c = aantalPlaatjes - 1;
                }
                //System.out.println("a=" + a + " b=" + b + " c=" + c);
                fruit[a].setIcon(fruitIMG[c]);
                break;
              }
            }
          }
        }
      }
    });
    klok2.setRepeats(true);
  }

  public static void maakAutoStopKlok() {
    int eenRondje0 = speed0 * aantalPlaatjes;
    //Math.random >= 0 && Math.random < 1
    //int dobbelsteen = (int)(6*Math.random()) + 1;
    int a = (int) (aantalPlaatjes * speed0 * Math.random()) + 1;
    autoStopKlok0 = new Timer((2 * eenRondje0) + a, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        stopGeklikt(0);
      }
    });
    autoStopKlok0.setRepeats(false);
    autoStopKlok0.start();
    //
    int eenRondje1 = speed1 * aantalPlaatjes;
    int b = (int) (aantalPlaatjes * speed1 * Math.random()) + 1;
    autoStopKlok1 = new Timer((4 * eenRondje1) + b, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        stopGeklikt(1);
      }
    });
    autoStopKlok1.setRepeats(false);
    autoStopKlok1.start();
    //
    int eenRondje2 = speed2 * aantalPlaatjes;
    int c = (int) (aantalPlaatjes * speed2 * Math.random()) + 1;
    autoStopKlok2 = new Timer((6 * eenRondje2) + c, new ActionListener() {

      public void actionPerformed(ActionEvent e) {
        stopGeklikt(2);
      }
    });
    autoStopKlok2.setRepeats(false);
    autoStopKlok2.start();
  }

  public static void startDraaien() {
    if (!geefKlok.isRunning()) {
      if (!klok0.isRunning() && !klok1.isRunning() && !klok2.isRunning()) {
        if (credits > 0) {
          System.out.println("startDraaien...");
          Audio.start(Main.class.getResource("Riff.wav"));
          stop0 = false;
          stop1 = false;
          stop2 = false;
          klok0.start();
          klok1.start();
          klok2.start();
          if (!magOpStopKlikken) {
            //Het programma bepaald dan zelf
            //wanneer de draaiers stoppen
            maakAutoStopKlok();
          }
        } else {
          JOptionPane.showMessageDialog(null, "Niet genoeg Credits !!\nKlik op: 'Muntje Erin' !");
        }
      } else {
        JOptionPane.showMessageDialog(null, "Hij draait al !");
      }
    } else {
      JOptionPane.showMessageDialog(null, "Je kan niet aan de Arm trekken\nals hij aan het uitbetalen is !");
    }
  }

  public static void printSystemProperties() {
    String[] ar = new String[7];
    ar[0] = "os.name";
    ar[1] = "os.arch";
    ar[2] = "os.version";
    ar[3] = "file.separator";
    ar[4] = "path.separator";
    ar[5] = "line.separator";
    ar[6] = "user.name";
    for (int a = 0; a < ar.length; a++) {
      System.out.println(ar[a] + " = " + System.getProperty(ar[a]));
    }
  }

  public static void main(String[] args) {
    new Main();
  }
}
